package {{apiPackage}};

import static org.springframework.http.MediaType.*;
import java.util.List;
import java.util.Map;
import java.util.HashMap;
{{#imports}}import {{import}};
{{/imports}}
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.util.MultiValueMap;
import org.springframework.http.*;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.multipart.MultipartFile;

{{#operations}}
@FeignClient(name = "{{providerServiceId}}")

{{#showBasePath}}
{{#basePath}}
@RequestMapping(value = "{{#getRelativeBasePath}}{{basePath}}{{/getRelativeBasePath}}" )
{{/basePath}}
{{/showBasePath}}
public interface {{classname}} {
{{#operation}}

  @RequestMapping(value = "{{path}}", {{#hasProduces}}produces = { {{#produces}}"{{mediaType}}"{{#hasMore}}, {{/hasMore}}{{/produces}} }, {{/hasProduces}} {{#hasConsumes}}consumes = { {{#consumes}}"{{mediaType}}"{{#hasMore}}, {{/hasMore}}{{/consumes}} },{{/hasConsumes}} method = RequestMethod.{{httpMethod}})
  {{>provider/servlet/returnTypes}} {{operationId}}({{#allParams}}{{>consumer/openfeign/queryParamsConsumer}}{{>consumer/openfeign/headerParamsConsumer}}{{>consumer/openfeign/bodyParamsConsumer}}{{>consumer/openfeign/formParamsConsumer}}{{>consumer/openfeign/pathParamsConsumer}}{{#hasMore}}, {{/hasMore}}{{/allParams}});

{{/operation}}
}
{{/operations}}